

import java.util.ArrayList;
import java.util.List;

//给定一个包含 m x n 个元素的矩阵（m 行, n 列），请按照顺时针螺旋顺序，返回矩阵中的所有元素
public class 螺旋矩阵 {
    public static void main(String[] args) {
        int[][] matrix={{1,2,3},
                {4,5,6},
                {7,8,9}};
        List<Integer> integers = spiralOrder(matrix);
        System.out.println(integers.toString());

    }
    public static List<Integer> spiralOrder(int[][] matrix) {
        //确定周围的范围
        int up=0;
        int down=matrix.length-1;
        int left=0;
        int right=matrix[0].length-1;
        List<Integer> list = new ArrayList<>();
        while (true){
            for (int i=left;i<=right;i++)
                list.add(matrix[up][i]);
                if (++up>down)
                   break;
            for (int i=up;i<=down;i++)
                list.add(matrix[i][right]);
                if (--right<left)
                    break;
            for (int i=right;i>=left;i--)
                list.add(matrix[down][i]);
                if (--down<up)
                    break;
            for (int i=down;i>=up;i--)
                list.add(matrix[i][left]);
                if (++left>right)
                break;
        }
        return list;
    }
}
